/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Source;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;

/**
 *
 * @author BlackEmpires
 */
public class Detalle_DAO implements DAO {

    private String sentenciaSQL;
    ConexionDB conexion;
    LinkedList<Detalle_POJO> listaDetalle = new LinkedList<Detalle_POJO>();
    ResultSet resultado;
    int valor = -1;
    private String temp;

    public Detalle_DAO() {

        conexion = new ConexionDB();
    }

    @Override
    public LinkedList<Detalle_POJO> obtenerReg(int id) {
        temp="SELECT * FROM detalle WHERE idDetalle=?";
        PreparedStatement ps=conexion.prepareStatement(temp);
        ps.setInt(1, id);
        //sentenciaSQL = "SELECT * FROM detalle WHERE idDetalle=" + id;

        try {
            conexion.abrirConexion();
            //resultado = conexion.getResultSet(sentenciaSQL);
            resultado=ps.executeQuery();

            if (resultado.next()) {
                Detalle_POJO objDetalle = new Detalle_POJO();
                objDetalle.setCantidad(Integer.parseInt(resultado.getString("cantidad")));
                objDetalle.setDescuento(Double.parseDouble(resultado.getString("descuento")));
                objDetalle.setIdArticulo(Integer.parseInt(resultado.getString("idArticulo")));
                objDetalle.setIdDetalle(Integer.parseInt(resultado.getString("idDetalle")));
                objDetalle.setIdPedido(Integer.parseInt(resultado.getString("idPedido")));

                listaDetalle.add(objDetalle);
                //System.out.println("Resultado "+resultado.getString("descuento")); 
            }

        } catch (Exception ex) {
            System.out.println("error " + ex);
            return null;
        }
        ps.close();
        conexion.cerrarConexion();
        
        return listaDetalle;
    }

    public int guardarReg(int pCantidad, Double pDescuento, int pIdPedido, int pIdArticulo) throws SQLException {

        temp="INSERT INTO detalle(cantidad,descuento, idPedido,idArticulo) VALUES (?,?,?,?)";
        PreparedStatement ps=conexion.prepareStatement(temp);
        ps.setInt(1, pCantidad);
        ps.setDouble(2, pDescuento);
        ps.setInt(3,pIdPedido);
        ps.setInt(4, pIdArticulo);
        
        //Tipos de datos en la BD  idDetalle int , cantidad int, descuento float4, idPedido int ,idArticulo int 
     /*   sentenciaSQL = "INSERT INTO detalle(cantidad,descuento,idPedido,idArticulo) VALUES ("
                + pCantidad + "," + pDescuento + "," + pIdPedido + "," + pIdArticulo + ")";   */

        //System.out.println("INSERT "+sentenciaSQL);
        try {
            conexion.abrirConexion();
            //valor = conexion.executeQuery(sentenciaSQL);
            valor=ps.executeUpdate();
            //System.out.println ("Insert exitoso");


        } catch (Exception ex) {
            System.out.println("error " + ex);
            valor = -1;
        }
        ps.close();
        conexion.cerrarConexion();
        return valor;

    }

    public int actualizarReg(int pIdDetalle, int pCantidad, Double pDescuento, int pIdPedido, int pIdArticulo) throws SQLException {
        
        temp="UPDATE detalle SET cantidad=? , descuento=?, idPedido=?,idArticulo=? WHERE idDetalle=?";
    /*    sentenciaSQL = "UPDATE detalle SET cantidad = " + pCantidad + ",descuento = "
                + pDescuento + ",idPedido =" + pIdPedido + ",idArticulo=" + pIdArticulo
                + " WHERE idDetalle = " + pIdDetalle;
*/
        
        PreparedStatement ps=conexion.prepareStatement(temp);
        ps.setInt(1, pCantidad);
        ps.setDouble(2, pDescuento);
        ps.setInt(3, pIdPedido);
        ps.setInt(4, pIdArticulo);
        ps.setInt(5, pIdDetalle);
        //System.out.println(sentenciaSQL);
        try {
            conexion.abrirConexion();
            //valor = conexion.executeQuery(sentenciaSQL);
            valor=ps.executeUpdate();
            //System.out.println ("Insert exitoso");

        } catch (Exception ex) {
            System.out.println("error " + ex);
            valor = -1;
        }
        ps.close();
        conexion.cerrarConexion();
        return valor;
    }

    @Override
    public int eliminarReg(int id) throws SQLException {
        temp="DELETE FROM detalle WHERE idDetalle=?";
        PreparedStatement ps=conexion.prepareStatement(temp);
        ps.setInt(1, id);
        
        //sentenciaSQL = "DELETE FROM detalle WHERE idDetalle=" + id;

        try {
            conexion.abrirConexion();
            //valor = conexion.executeQuery(sentenciaSQL);
            valor=ps.executeUpdate();

        } catch (Exception ex) {
            System.out.println("error " + ex);
            valor = -1;

        }
        ps.close();
        conexion.cerrarConexion();
        return valor;
    }
}
